function MaxId(w) {
	var max_id = 0;
	for( key in w.items.keys) {
		var skey = w.items.keys[key].split("-");
		if (skey[0] == 'column') {
			if (max_id < skey[1]) {
				max_id = skey[1];
			} 
		}
	}
	return max_id - 0
}

function add_search_param(obj) {
	var find_window = Ext.getCmp('find_window');
	var max_id = MaxId(find_window);
	if (max_id < 9) {
		/*find_window.add(Ext.create(Ext.form.field.ComboBox, {
			store: new Ext.progs.stores.Group(),
			displayField: 'group',
			id: 'group-' + (max_id + 1)
		}));*/
		find_window.add(Ext.create(Ext.form.field.ComboBox, {
			store: new Ext.progs.stores.Columns(),
			displayField: 'name',
			width: 150,
			id: 'column-' + (max_id + 1)
		}));
		find_window.add(Ext.create(Ext.form.field.ComboBox, {
			store: new Ext.progs.stores.Operation(),
			displayField: 'name',
			width:100,
			id: 'operation-' + (max_id + 1)
		}));
		find_window.add(Ext.create(Ext.form.field.Base, {
			width: 400,
			id: 'value-' + (max_id + 1),
				listeners: {
				keydown: {
					element: 'el',
					fn: find_keydown,
				}
			}
		}));
		/*find_window.add(Ext.create(Ext.form.field.ComboBox, {
			store: new Ext.progs.stores.Operator(),
			displayField: 'name',
			id: 'operator-' + (max_id + 1)
		}));*/
	}
}

function remove_search_param(obj) {
	var find_window = Ext.getCmp('find_window');
	var max_id = MaxId(find_window);
	if (max_id > 1) {
		//Ext.getCmp("group-" + max_id).destroy();
		Ext.getCmp("column-" + max_id).destroy();
		Ext.getCmp("operation-" + max_id).destroy();
		Ext.getCmp("value-" + max_id).destroy();
		//Ext.getCmp("operator-" + max_id).destroy();
	}
}

function reg_search(obj) {
	var find_window = Ext.getCmp('find_window');
	var max_id = MaxId(find_window);
	var param = []
	for( var i = 1; i < max_id + 1; i++) {
		try {
			if (Ext.getCmp('column-' + i).valueModels[0].data.id == 1) {
				value = new Date(Ext.getCmp('value-' + i).getValue().replace(/(\d+).(\d+).(\d+)/, '$3/$2/$1'));
				value = value.getTime() / 1000;
			} else {
				value = Ext.getCmp('value-' + i).getValue();
			}
			param [i-1] = [
				//Ext.getCmp('group-' + i).valueModels[0].data.id,
				Ext.getCmp('column-' + i).valueModels[0].data.id,
				Ext.getCmp('operation-' + i).valueModels[0].data.id,
				value
				//(max_id == i) ? 0 : Ext.getCmp('operator-' + i).valueModels[0].data.id
				//Ext.getCmp('operator-' + i).valueModels[0].data.id
			];
		} catch (TypeError) {
			Ext.Msg.show({
				title: 'Ошибка',
				msg: 'Заполните все поля!',
				buttons: Ext.Msg.OK,
				icon: Ext.Msg.ERROR
			});
			return;
		};
	}
	qid = server.register_search(param);
	main_store.proxy.url = "/frigoglass/src/server/get_main.py?qid=" + qid;
	find_window.close();
	main_store.load();
}

function sn_keydown(k) {
	if(k.keyCode == 13){
		Ext.getCmp('in-1000').focus();
		if (Ext.getCmp('in-1000').getValue() == 'Нет номера') {
			k = {keyCode: 13};
			in_keydown(k);
		}
	};
}

function find_keydown(k, y) {
	if(k.keyCode == 13){
		reg_search();
	}
}

function adate_keydown(k, y) {
	if(k.keyCode == 13){
		Ext.getCmp('aclient').focus();
	}
}

function aclient_keydown(k, y) {
	if(k.keyCode == 13){
		Ext.getCmp('aaddress').focus();
	}
}

function aaddress_keydown(k, y) {
	if(k.keyCode == 13){
		Ext.getCmp('amodel').focus();
	}
}

function amodel_keydown(k, y) {
	if(k.keyCode == 13){
		Ext.getCmp('adisign').focus();
	}
}

function adisign_keydown(k, y) {
	if(k.keyCode == 13){
		Ext.getCmp('awarranty').focus();
	}
}

function awarranty_keydown(k, y) {
	if(k.keyCode == 13){
		Ext.getCmp('attn').focus();
	}
}

function attn_keydown(k, y) {
	if(k.keyCode == 13){
		Ext.getCmp('aschet').focus();
	}
}

function aschet_keydown(k, y) {
	if(k.keyCode == 13){
		Ext.getCmp('acode').focus();
	}
}

function acode_keydown(k, y) {
	if(k.keyCode == 13){
		k.keyCode = '';
		Ext.getCmp('acomment').focus();
	}
}

function in_keydown(k) {
	if(k.keyCode == 13){
		snin = Ext.getCmp('snin-1000');
		var Sn = Ext.getCmp('sn-1000').getValue();
		var In = Ext.getCmp('in-1000').getValue();
		if (In == 'Нет номера') {
			In = "";
		} else {
			Ext.getCmp('in-1000').reset();
		}
		Ext.getCmp('sn-1000').reset();
		Ext.getCmp('sn-1000').focus();
		server2.check_ident({
			params:[Sn, In],
			onSuccess: function(result) {
				if (!result) {
					snin.store.add({serial_number: Sn, inventory_number: In, c: result});
				} else {
					if (In == "") {
						var param = [[2, 1, Sn]]
					} else {
						var param = [[3, 1, In]]
					}
					server2.register_search({
						params: [param],
						onSuccess: function(nqid) {
							main_store2.proxy.url = "/frigoglass/src/server/get_main.py?qid=" + nqid;
							main_store2.load();
							var tw = Ext.create('Ext.window.Window', {
								title: 'Добавление данных в базу',
								height: 250,
								width: 550,
								modal: true,
								items: [{
									xtype: 'grid',
									height: '100%',
									width: '100%',
									store: main_store2,
									scroll: 'both',
									plugins: [{
										ptype: 'rowexpander',
										rowBodyTpl : [
											'<p>{comment}</p>'
										]
									}],
									columns: [
										Ext.create('Ext.grid.RowNumberer'),
										{text: 'Дата', dataIndex: 'date', renderer: Ext.util.Format.dateRenderer('d.m.Y')},
										{text: 'Серийный номер', dataIndex: 'sn'},
										{text: 'Инвентарный номер', dataIndex: 'in'},
										{text: 'Название клиента', dataIndex: 'client'},
										{text: 'Адрес доставки', dataIndex:	'address'},
										{text: 'Модель', dataIndex: 'model'},
										{text: 'Дизайн', dataIndex: 'disign'},
										{text: 'Гарантия', dataIndex: 'warranty'},
										{text: '№ ТТН', dataIndex: 'ttn'},
										{text: '№ с/фактуры', dataIndex: 'schet'},
										{text: 'Склад.код', dataIndex: 'code', flex: 1},
									]
								}],
								buttons: [{
										xtype: 'field',
										hidden: true,
										id: 'twsn',
										value: Sn,
									},{
										xtype: 'field',
										hidden: true,
										id: 'twin',
										value: In,
									},{
									xtype: 'button',
									text: 'Добавить',
									handler: function() {
										snin.store.add({
											serial_number: Ext.getCmp('twsn').getValue(),
											inventory_number: Ext.getCmp('twin').getValue(), 
											c: result
										});
										tw.close();
										Ext.getCmp('snin-1000').setScrollTop(100000);
										Ext.getCmp('sn-1000').focus();
									}
								},{
									xtype: 'button',
									text: 'Отменить',
									handler: function(){
										tw.close();
										Ext.getCmp('snin-1000').setScrollTop(100000);
										Ext.getCmp('sn-1000').focus();
									}
								}]
							});
							tw.show();
						},
						onException: function(errObj) {
							Ext.Msg.show({
								title: 'Ошибка',
								msg: 'Произошла ошибочка! Регистрация номера поиска не удалась!',
								buttons: Ext.Msg.OK,
								icon: Ext.Msg.ERROR
							});
						}
					});
				}
				Ext.getCmp('snin-1000').setScrollTop(100000);
				Ext.getCmp('sn-1000').focus();
			},
			onException: function(errObj) {
				Ext.Msg.show({
					title: 'Ошибка',
					msg: 'Произошла ошибочка! Номер не добавлен!',
					buttons: Ext.Msg.OK,
					icon: Ext.Msg.ERROR
				});
			}
		});
		//c = server.check_ident(Sn, In);
		
	};
}

function add_main() {
	var adate = Ext.getCmp('adate').getValue();
	var aclient = Ext.getCmp('aclient').getValue();
	var aaddress = Ext.getCmp('aaddress').getValue();
	var amodel = Ext.getCmp('amodel').getValue();
	var adisign = Ext.getCmp('adisign').getValue();
	var awarranty = Ext.getCmp('awarranty').getValue();
	var attn = Ext.getCmp('attn').getValue().split("/");
	var aschet = Ext.getCmp('aschet').getValue().split("/");
	var acode = Ext.getCmp('acode').getValue();
	var acomment = Ext.getCmp('acomment').getValue();
	var check = [adate, aclient, aaddress, amodel, adisign, awarranty, attn, aschet,
			 acode];
	for (var i in check) {
		if (!check[i]) {
			if (check[i] != 0 ){
				Ext.Msg.show({
					title: 'Ошибка',
					msg: 'Заполните все поля!' + i + check[i],
					buttons: Ext.Msg.OK,
					icon: Ext.Msg.ERROR
				});
				return false;
			}
		}
	}
	var store = Ext.getCmp('snin-1000').store;
	if (store.data.length) {
		var params = []
		for (var i in store.data.items){
			params[i] = {
				serial_number: store.data.items[i].data.serial_number,
				inventory_number: store.data.items[i].data.inventory_number
			} 
		}
		var id_main = server.save_main(adate.getTime() / 1000, aclient, aaddress, amodel,
			adisign, awarranty, attn, aschet, acode, acomment, params);
	} else {
		Ext.Msg.show({
			title: 'Ошибка',
			msg: 'Заполните таблицу номеров!',
			buttons: Ext.Msg.OK,
			icon: Ext.Msg.ERROR
		});
		return false;
	}
	return true;
}

function add_main_n(){
	if (add_main()) {
		Ext.getCmp('add_window').close();
		main_store.load();
	}
}

function add_main_c(){
	if (add_main()) {
		var store = Ext.getCmp('snin-1000').store;
		store.load();
		main_store.load();
	}
}

function cell_color(value, md, record){
	if (record.data.c) {
		return '<font color="#CC0000">' + value + '</font>';
	}
	return value
}

Ext.define('Ext.progs.models.Group', {
	extend: 'Ext.data.Model',
	fields: ['id', 'group']
});

Ext.define('Ext.progs.models.Columns', {
	extend: 'Ext.data.Model',
	fields: ['id', 'name']
});

Ext.define('Ext.progs.stores.Operation', {
	extend: 'Ext.data.Store',
	model: 'Ext.progs.models.Columns',
	autoLoad: true,
	proxy: {
		type: 'memory'
	},
	data: [
		{id: 1, name: 'равно'},
		{id: 2, name: 'больше'},
		{id: 3, name: 'меньше'},
		{id: 4, name: 'не равно'},
		{id: 5, name: 'шаблон'},
	]
});

Ext.define('Ext.progs.stores.Operator', {
	extend: 'Ext.data.Store',
	model: 'Ext.progs.models.Columns',
	autoLoad: true,
	proxy: {
		type: 'memory'
	},
	data: [
		{id: 1, name: 'И'},
		{id: 2, name: 'ИЛИ'},
	]
});

Ext.define('Ext.progs.stores.Columns', {
	extend: 'Ext.data.Store',
	model: 'Ext.progs.models.Columns',
	autoLoad: true,
	proxy: {
		type: 'memory'
	},
	data: [
		{id: 1, name: 'Дата'},
		{id: 2, name: 'Сер. номер'},
		{id: 3, name: 'Инв. номер'},
		{id: 4, name: 'Клиент'},
		{id: 5, name: 'Адрес'},
		{id: 6, name: 'Модель'},
		{id: 7, name: 'Дизайн'},
		{id: 8, name: 'Гарантия'},
		{id: 9, name: '№ ТТН'},
		{id: 10, name: '№ с/фактуры'},
		{id: 11, name: 'Склад. код'},
		{id: 12, name: 'Комментарий'}
	]
});

Ext.define('Ext.progs.stores.Group', {
	extend: 'Ext.data.Store',
	model: 'Ext.progs.models.Group',
	autoLoad: true,
	proxy: {
		type: 'memory'
	},
	data: [
		{id: 1, group: 'Группа 1'},
		{id: 2, group: 'Группа 2'},
		{id: 3, group: 'Группа 3'},
		{id: 4, group: 'Группа 4'},
		{id: 5, group: 'Группа 5'},
		{id: 6, group: 'Группа 6'},
		{id: 7, group: 'Группа 7'},
		{id: 8, group: 'Группа 8'},
		{id: 9, group: 'Группа 9'},
		{id: 10, group: 'Группа 10'}
	]
});

Ext.define('Ext.progs.window.Search', {
	extend: 'Ext.window.Window', 
	title: "Поиск данных",
	id: 'find_window',
	height: 420,
	width: 450,
	autoDestroy: true,
	modal: true,
	layout: {
		type: 'table',
		columns: 3
	},
	id: 'find_window',
	defaults: {
		labelWidth: 90,
		queryMode: 'local',
		minChars: 1,
		typeAhead: true,
	},
	margins:'0 0 0 3',
	bodyStyle  : 'padding: 10px; background-color: #DFE8F6',
	items: [/*{
		xtype: 'label',
		text: 'Группа'
	},*/{
		xtype: 'label',
		text: 'Колонка'
	},{
		xtype: 'label',
		text: 'Условие'
	},{
		xtype: 'label',
		text: 'Значение'
	},/*{
		xtype: 'label',
		text: 'Оператор'
	},{
		xtype: 'combo',
		store: new Ext.progs.stores.Group(),
		displayField: 'group',
		id: 'group-1',
	},*/{
		xtype: 'combo',
		store: new Ext.progs.stores.Columns(),
		displayField: 'name',
		width: 150,
		id: 'column-1',
	},{
		xtype: 'combo',
		store: new Ext.progs.stores.Operation(),
		displayField: 'name',
		width: 100,
		id: 'operation-1',
	},{
		xtype: 'field',
		width: 300,
		id: 'value-1',
		listeners: {
			keydown: {
				element: 'el',
				fn: find_keydown,
			}
		}
	}/*,{
		xtype: 'combo',
		store: new Ext.progs.stores.Operator(),
		displayField: 'name',
		id: 'operator-1',
	}*/],
	tbar: [{
		xtype: 'button',
		text: 'Добавить условие',
		iconCls: 'icon-add',
		handler: add_search_param,
	},{
		xtype: 'button',
		text: 'Удалить условие',
		iconCls: 'icon-remove',
		handler: remove_search_param,
	}],
	buttons: [{
		xtype: 'button',
		id: 'findButton',
		text: 'Поиск',
		handler: reg_search
	},{
		xtype: 'button',
		text: 'Закрыть',
		handler: function () {
			Ext.getCmp('find_window').close();
		}
	}]
});

////////////////////////////////////////////////////////////////////////////////
//  version = '0.1.0'														  //
//  author  = "Eugene Frolov"												  //
//  mail    = "profisphantom@gmail.com"										  //
////////////////////////////////////////////////////////////////////////////////


ConfigClass = function (){
	this.address = '/frigoglass/src/server/xmlrpc.py';
}

Ext.define('Ext.progs.models.Main', {
	extend: 'Ext.data.Model',
	fields: [
		'id', {name: 'date', type: 'date', dateFormat: 'timestamp'}, 'client', 
		'address', 'model', 'disign', 'warranty', 'ttn', 'schet', 'code', 
		'comment', 'sn', 'in'
	]
});

Ext.define('Ext.progs.storages.Main', {
	extend: 'Ext.data.Store',
	model: 'Ext.progs.models.Main',
	autoLoad: true,
	autoSync: true,
	proxy: {
		type: 'ajax',
		timeout: 3600000,
		url : '/frigoglass/src/server/get_main.py?qid=0',
		api: {
			update: '/frigoglass/src/server/update_main.py',
		},
		reader: {
			type: 'json',
			root: 'main',
			totalProperty: 'totalCount'
		},
		writer: {
			type: 'json',
			allowSingle: true,
			writeAllFields: false,
			successProperty: 'success',
			root: 'data'
		}
	}
});

qid = 0;

var main_store = new Ext.progs.storages.Main();
var main_store2 = new Ext.progs.storages.Main();

function main() {
	Ext.QuickTips.init();
	config = new ConfigClass();
	server = new rpc.ServiceProxy(config.address, {asynchronous:false, 
			protocol: "XML-RPC"});
	
	var rowEditing = Ext.create('Ext.grid.plugin.RowEditing', {
		clicksToMoveEditor: 1,
		autoCancel: true,
	});
	
	
	server2 = new rpc.ServiceProxy(config.address, {protocol: "XML-RPC"});
	Ext.create('Ext.container.Viewport', {
		items: [{
			region: 'center',
			xtype: 'panel',
			tbar: [{
				xtype:	'button',
				text:	'Добавить...',
				iconCls: 'icon-add',
				handler: function () {
					Ext.create('Ext.window.Window', {
						title: 'Добавление данных в базу',
						height: 400,
						width: 550,
						modal: true,
						//closable: false,
						id: 'add_window',
						autoDestroy: true,
						layout: {
							type: 'table',
							columns: 2
						},
						defaults: {
							labelWidth: 90,
							width:253,
							queryMode: 'remote',
							minChars: 1,
							typeAhead: true
						},
						margins:'0 0 0 3',
						bodyStyle  : 'padding: 10px; background-color: #DFE8F6',
						items: [{
							xtype: 'label',
						},{
							xtype: 'datefield',
							fieldLabel: 'Дата отгрузки',
							format: 'd.m.Y',
							id: 'adate',
							listeners: {
								keydown: {
									element: 'el',
									fn: adate_keydown,
								}
							}
						}, {
							xtype: 'combo',
							fieldLabel: 'Клиент',
							displayField: 'name',
							store: new Ext.progs.stores.Client(),
							id: 'aclient',
							listeners: {
								keydown: {
									element: 'el',
									fn: aclient_keydown,
								}
							}
						},{
							xtype: 'combo',
							fieldLabel: 'Адрес',
							displayField: 'address',
							store: new Ext.progs.stores.Address(),
							id: 'aaddress',
							listeners: {
								keydown: {
									element: 'el',
									fn: aaddress_keydown,
								}
							}
						},{
							xtype: 'combo',
							fieldLabel: 'Модель',
							displayField: 'name',
							store: new Ext.progs.stores.Model(),
							id: 'amodel',
							listeners: {
								keydown: {
									element: 'el',
									fn: amodel_keydown,
								}
							}
						},{
							xtype: 'combo',
							fieldLabel: 'Дизайн',
							displayField: 'name',
							store: new Ext.progs.stores.Disign(),
							id: 'adisign',
							listeners: {
								keydown: {
									element: 'el',
									fn: adisign_keydown,
								}
							}
						},{
							xtype: 'combo',
							fieldLabel: 'Гарантия',
							displayField: 'periud',
							store: new Ext.progs.stores.Warranty(),
							id: 'awarranty',
							listeners: {
								keydown: {
									element: 'el',
									fn: awarranty_keydown,
								}
							}
						},{
							xtype: 'field',
							fieldLabel: 'ТТН',
							id: 'attn',
							listeners: {
								keydown: {
									element: 'el',
									fn: attn_keydown,
								}
							}
						},{
							xtype: 'field',
							fieldLabel: 'Счет',
							id: 'aschet',
							listeners: {
								keydown: {
									element: 'el',
									fn: aschet_keydown,
								}
							}
						},{
							xtype: 'field',
							fieldLabel: 'Код',
							id: 'acode',
							listeners: {
								keydown: {
									element: 'el',
									fn: acode_keydown,
								}
							}
						},{
							xtype: 'textarea',
							colspan: 2,
							width: 515,
							hideLabel: true,
							id: 'acomment',
						},{
							xtype: 'grid',
							width: 515,
							height: 100,
							id: 'snin-1000',
							colspan: 2,
							autoScroll: true,
							store: new Ext.progs.stores.SnIn(),
							/*viewConfig: {
								getRowClass: function(record, index) {
									var c = record.get('c');
									if (c) {
										return 'color-f';
									}
								}
							},*/
							columns:	[
								Ext.create('Ext.grid.RowNumberer'),{
									text: 'Серийный номер',
									dataIndex: 'serial_number',
									flex: 1,
									renderer: cell_color,
									field: {
										allowBlank: false
									},
								},{
									text: 'Инвентарный номер',
									dataIndex: 'inventory_number',
									flex: 1,
									renderer: cell_color,
									field: {
										allowBlank: false
									},
								},
							],
							plugins: [
								Ext.create('Ext.grid.plugin.RowEditing', {
									clicksToEdit: 2,
								}),
							],
						},{
							xtype: 'field',
							fieldLabel: 'Сер. номер',
							id: 'sn-1000',
							listeners: {
								keydown: {
									element: 'el',
									fn: sn_keydown,
								}
							}
						},{
							xtype: 'combo',
							fieldLabel: 'Инв. номер',
							id: 'in-1000',
							autoSelect: false,
							queryDelay: 3600000,
							displayField: 'z',
							store: new Ext.data.Store({
								model: Ext.progs.models.MIn,
								proxy: {
									type: 'memory',
								},
								data: [{id: 2, 'z': 'Нет номера'}],
							}),
							listeners: {
								keydown: {
									element: 'el',
									fn: in_keydown,
								}
							}
						}],
						buttons:['->', {
							xtype: 'button',
							text: 'Добавить',
							handler: add_main_n,
						},{
							xtype: 'button',
							text: 'Добавить и продолжить',
							handler: add_main_c,
						}]
					}).show();
				}
			},{
				xtype: 'button',
				text: 'Удалить выделенное...',
				iconCls: 'icon-remove',
				handler: function () {
					Ext.MessageBox.confirm('Подтвердите!', 'Точно удалить выделенное?', function(btn, text){
						if (btn == 'yes') {
							sm = Ext.getCmp('main_grid').getSelectionModel();
							if (sm.selected.items.length == 0){
								Ext.Msg.alert('Хм!!!', 'Нет выбраных строк!');
							} else {
								var r = new Array(sm.selected.items.length);
								for (var si in sm.selected.items){
									r[si] = sm.selected.items[si].data.id;
								};
								server2.delete_items({
									params: [r],
									onSuccess: function() {
										main_store.load();
									},
									onException: function() {
										Ext.Msg.alert('Ошибка!', 'Ошибка сервера!');
									}
								});
							}
						}
					});
				},
			},{
				xtype:	'button',
				text:	'Поиск...',
				iconCls: 'icon-find',
				handler: function () {
					Ext.create('Ext.progs.window.Search').show();
				}
			},{
				xtype: 'button',
				text: 'Сбросить поиск',
				iconCls: 'icon-clear',
				handler: function () {
					main_store.proxy.url = "/frigoglass/src/server/get_main.py?qid=0";
					qid = 0;
					main_store.load();
				}
			},{
				xtype: 'button',
				text: 'Экспорт в Excel',
				handler: function () {
					window.location.href = server.xls(qid);
				}
			},{
				xtype:	'tbfill',
			},{
				xtype:	'button',
				text:	'Помощь',
				iconCls: 'icon-help',
				menu:	[{
					text:	'Сообщить об ошибке...',
					iconCls:'icon-bug',
				},{
					text:	'Написать разработчикам...',
					iconCls:'icon-email',
				},'-',{
					text:	'О программе...',
					iconCls:'icon-about',
				}],
			}],
			items: [{
				xtype: 'grid',
				height: '100%',
				store: main_store,
				id: "main_grid",
				scroll: 'both',
				plugins: [{
					ptype: 'rowexpander',
					rowBodyTpl : [
						'<p>{comment}</p>'
					]
				},rowEditing],
				multiSelect: true,
				columns: [
					Ext.create('Ext.grid.RowNumberer', {
						width: 60,
						
					}),
					{
						text: 'Дата', 
						dataIndex: 'date', 
						renderer: Ext.util.Format.dateRenderer('d.m.Y'),
						field: {
							xtype: 'datefield',
							allowBlank: false,
							format: 'd.m.Y',
						},
					},{
						text: 'Серийный номер', 
						dataIndex: 'sn',
						editor: {
							allowBlank: false,
						}
					},{
						text: 'Инвентарный номер', 
						dataIndex: 'in',
						editor: {
							allowBlank: true,
						},
					},{
						text: 'Название клиента',
						dataIndex: 'client',
						field: {
							xtype: 'combo',
							displayField: 'name',
							store: new Ext.progs.stores.Client(),
						},
					},{
						text: 'Адрес доставки',
						dataIndex: 'address',
						field: {
							xtype: 'combo',
							displayField: 'address',
							store: new Ext.progs.stores.Address(),
						},
					},{
						text: 'Модель',
						dataIndex: 'model',
						field: {
							xtype: 'combo',
							displayField: 'name',
							store: new Ext.progs.stores.Model(),
						},
					},{
						text: 'Дизайн',
						dataIndex: 'disign',
						field: {
							xtype: 'combo',
							displayField: 'name',
							store: new Ext.progs.stores.Disign(),
						},
					},{
						text: 'Гарантия',
						dataIndex: 'warranty',
						field: {
							xtype: 'combo',
							displayField: 'periud',
							store: new Ext.progs.stores.Warranty(),
						},
					},{
						text: '№ ТТН',
						dataIndex: 'ttn',
						editor: {
							allowBlank: false,
						},
					},{
						text: '№ с/фактуры',
						dataIndex: 'schet',
						editor: {
							allowBlank: false,
						},
					},{
						text: 'Склад.код',
						dataIndex: 'code',
						flex: 1,
						editor: {
							allowBlank: false,
						},
					},
				]
			}],
			width: '100%',
			height: '100%',
			bbar: [ new Ext.PagingToolbar({
				pageSize: 25,
				store: main_store,
				displayInfo: true,
				displayMsg: 'Показано записей {0} - {1} из {2}',
				emptyMsg: "Нет данных...",
				width: '100%',
			})],
		}],
		renderTo: Ext.getBody(),
	});
	main_store.on('write', function () {main_store.load()});
};

Ext.onReady(main);

Ext.define('Ext.progs.models.MIn', {
	extend: 'Ext.data.Model',
	fields: ['id', 'z']
});


Ext.define('Ext.progs.models.Address', {
	extend: 'Ext.data.Model',
	fields: ['id', 'address']
});

Ext.define('Ext.progs.models.Client', {
	extend: 'Ext.data.Model',
	fields: ['id', 'name'],
});

Ext.define('Ext.progs.models.Model', {
	extend: 'Ext.data.Model',
	fields: ['id', 'name']
});

Ext.define('Ext.progs.models.Disign', {
	extend: 'Ext.data.Model',
	fields: ['id', 'name']
});

Ext.define('Ext.progs.models.Warranty', {
	extend: 'Ext.data.Model',
	fields: ['id', 'periud']
});

Ext.define('Ext.progs.models.SnIn', {
	extend: 'Ext.data.Model',
	fields: ['serial_number', 'inventory_number', 'c']
});

Ext.define('Ext.progs.stores.Address', {
	extend: 'Ext.data.Store',
	model: 'Ext.progs.models.Address',
	autoLoad: true,
	proxy: {
		type: 'ajax',
		url: '/frigoglass/src/server/get_table.py?table=Address',
		reader: {
			type: 'json',
			root: 'main'
		}
	}
});

Ext.define('Ext.progs.stores.Client', {
	extend: 'Ext.data.Store',
	model: 'Ext.progs.models.Client',
	autoLoad: true,
	proxy: {
		type: 'ajax',
		url: '/frigoglass/src/server/get_table.py?table=Client',
		reader: {
			type: 'json',
			root: 'main'
		}
	}
});

Ext.define('Ext.progs.stores.Model', {
	extend: 'Ext.data.Store',
	model: 'Ext.progs.models.Model',
	autoLoad: true,
	proxy: {
		type: 'ajax',
		url: '/frigoglass/src/server/get_table.py?table=Model',
		reader: {
			type: 'json',
			root: 'main'
		}
	}
});

Ext.define('Ext.progs.stores.Disign', {
	extend: 'Ext.data.Store',
	model: 'Ext.progs.models.Disign',
	autoLoad: true,
	proxy: {
		type: 'ajax',
		url: '/frigoglass/src/server/get_table.py?table=Disign',
		reader: {
			type: 'json',
			root: 'main'
		}
	}
});

Ext.define('Ext.progs.stores.Warranty', {
	extend: 'Ext.data.Store',
	model: 'Ext.progs.models.Warranty',
	autoLoad: true,
	proxy: {
		type: 'ajax',
		url: '/frigoglass/src/server/get_table.py?table=Warranty',
		reader: {
			type: 'json',
			root: 'main'
		}
	}
});

Ext.define('Ext.progs.stores.SnIn', {
	extend: 'Ext.data.Store',
	model: 'Ext.progs.models.SnIn',
	proxy: {
		type: 'memory'
	},
	data: []
});

